Student Details

Student ID Number 134780
Student Name Trevor Okinda
BBIT 4.2 Group C
Project Name Clothes Price Prediction

Setup Chunk

Note: the following KnitR options have been set as the global defaults:
knitr::opts_chunk$set(echo = TRUE, warning = FALSE, eval = TRUE, collapse = FALSE, tidy = TRUE).

More KnitR options are documented here https://bookdown.org/yihui/rmarkdown-cookbook/chunk-options.html and here https://yihui.org/knitr/options/.

Source:

The dataset that was used can be downloaded here: <https://www.kaggle.com/datasets/mrsimple07/clothes-price-prediction\>

Reference:

<AAbdurakhimov, M. (2024). Clothes Price Prediction [Dataset]. Kaggle. https://www.kaggle.com/datasets/mrsimple07/clothes-price-prediction\>
Refer to the APA 7th edition manual for rules on how to cite datasets: https://apastyle.apa.org/style-grammar-guidelines/references/examples/data-set-references

Understanding the Dataset (Exploratory Data Analysis (EDA))

Load dataset

# Load necessary library
library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
# Load dataset
clothes_data <- read.csv("clothes_price_prediction_data.csv", colClasses = c(
  Brand = "factor",
  Category = "factor",
  Color = "factor",
  Size = "factor",
  Material = "factor",
  Price = "numeric"
))

Measures of Frequency

# Measures of Frequency
frequency_brand <- clothes_data %>% count(Brand)
frequency_category <- clothes_data %>% count(Category)
frequency_color <- clothes_data %>% count(Color)
frequency_size <- clothes_data %>% count(Size)
frequency_material <- clothes_data %>% count(Material)

Measures of Central Tendency

# Measures of Central Tendency
central_tendency_summary <- summarise(clothes_data, 
                                      mean_price = mean(Price),
                                      median_price = median(Price),
                                      mode_price = as.numeric(names(sort(-table(Price))[1])))

Measures of Distribution

# Measures of Distribution
distribution_summary <- summarise(clothes_data,
                                  min_price = min(Price),
                                  max_price = max(Price),
                                  range_price = max_price - min_price,
                                  sd_price = sd(Price),
                                  quantiles_price = quantile(Price))

Measures of Relationship

# Measures of Relationship (Correlation Matrix)
correlation_matrix <- cor(select(clothes_data, -c(1:5))) # Excluding non-numeric columns

Results

# Display results
frequency_brand
##          Brand   n
## 1       Adidas 166
## 2  New Balance 164
## 3         Nike 165
## 4         Puma 168
## 5       Reebok 158
## 6 Under Armour 179
frequency_category
##   Category   n
## 1    Dress 166
## 2   Jacket 191
## 3    Jeans 167
## 4    Shoes 172
## 5  Sweater 160
## 6  T-shirt 144
frequency_color
##    Color   n
## 1  Black 163
## 2   Blue 163
## 3  Green 162
## 4    Red 168
## 5  White 171
## 6 Yellow 173
frequency_size
##   Size   n
## 1    L 141
## 2    M 157
## 3    S 166
## 4   XL 167
## 5   XS 196
## 6  XXL 173
frequency_material
##    Material   n
## 1    Cotton 162
## 2     Denim 163
## 3     Nylon 155
## 4 Polyester 175
## 5      Silk 173
## 6      Wool 172
central_tendency_summary
##   mean_price median_price mode_price
## 1    106.289          108         97
distribution_summary
##   min_price max_price range_price sd_price quantiles_price
## 1        10       199         189 53.69544           10.00
## 2        10       199         189 53.69544           59.75
## 3        10       199         189 53.69544          108.00
## 4        10       199         189 53.69544          150.00
## 5        10       199         189 53.69544          199.00
correlation_matrix
##       Price
## Price     1

ANOVA

# Perform ANOVA
anova_result <- aov(Price ~ Category, data = clothes_data)

# Summary of ANOVA
summary(anova_result)
##              Df  Sum Sq Mean Sq F value Pr(>F)
## Category      5   19986    3997   1.389  0.226
## Residuals   994 2860331    2878

Plots

# Load necessary libraries
library(ggplot2)

# Univariate Plot for Price variable
price_plot <- ggplot(clothes_data, aes(x = Price)) +
  geom_histogram(fill = "skyblue", color = "black", bins = 30) +
  labs(title = "Distribution of Prices", x = "Price", y = "Frequency")

# Univariate Plot for Category variable
category_plot <- ggplot(clothes_data, aes(x = Category)) +
  geom_bar(fill = "skyblue", color = "black") +
  labs(title = "Frequency of Categories", x = "Category", y = "Frequency") +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))

# Display univariate plots
price_plot

category_plot

# Load necessary libraries
library(plotly)
## 
## Attaching package: 'plotly'
## The following object is masked from 'package:ggplot2':
## 
##     last_plot
## The following object is masked from 'package:stats':
## 
##     filter
## The following object is masked from 'package:graphics':
## 
##     layout
# Multivariate Plot (Scatter Plot)
multivariate_plot <- plot_ly(data = clothes_data, x = ~Price, y = ~Category, type = "scatter", mode = "markers",
                             marker = list(color = "rgba(255, 182, 193, 0.7)", size = 10),
                             text = ~paste("Price: $", Price, "<br>Category: ", Category)) %>%
  layout(title = "Price vs. Category", xaxis = list(title = "Price"), yaxis = list(title = "Category"))

# Display multivariate plot
multivariate_plot

Preprocessing and Data Transformation

Missing Values

# Check for missing values
missing_values <- colSums(is.na(clothes_data))

# Print the count of missing values
print(missing_values)
##    Brand Category    Color     Size Material    Price 
##        0        0        0        0        0        0

Training Models

Data Splitting

library(caTools)

# Split the dataset into training and testing sets
set.seed(123) # For reproducibility
split <- sample.split(clothes_data$Price, SplitRatio = 0.7)
train_data <- subset(clothes_data, split == TRUE)
test_data <- subset(clothes_data, split == FALSE)

dim(train_data)
## [1] 705   6
dim(test_data)
## [1] 295   6

Bootstrapping

# Load necessary library
library(boot)

# Define function for bootstrapping
bootstrap_func <- function(data, indices) {
  sampled_data <- data[indices, ]
  # Perform your analysis or modeling here
  # For example, you can fit a linear model:
  lm_model <- lm(Price ~ ., data = sampled_data)
  # Then return the parameters you're interested in
  return(coef(lm_model))
}

# Perform bootstrapping
boot_results <- boot(data = clothes_data, statistic = bootstrap_func, R = 1000)

# View bootstrap results
print(boot_results)
## 
## ORDINARY NONPARAMETRIC BOOTSTRAP
## 
## 
## Call:
## boot(data = clothes_data, statistic = bootstrap_func, R = 1000)
## 
## 
## Bootstrap Statistics :
##         original       bias    std. error
## t1*  103.9946756 -0.176058274    8.953478
## t2*   12.7264152 -0.005695782    5.809365
## t3*   -1.4759025 -0.072089249    6.049415
## t4*    3.4893495  0.012234464    6.027902
## t5*    2.2910323 -0.138050559    6.088725
## t6*    1.2244811  0.237183053    6.028520
## t7*  -11.1851208  0.065876361    5.686781
## t8*  -13.5825351  0.004832316    5.640385
## t9*   -5.5943042 -0.068245969    5.892268
## t10*  -6.9070227  0.064744386    5.763138
## t11*  -8.6634610  0.083248018    6.120493
## t12*   3.9748481  0.371486263    5.904099
## t13*  -0.1240886 -0.076747668    6.393818
## t14*   2.4752797  0.416401538    6.249293
## t15*  10.2723453  0.182177050    5.924423
## t16*   0.6619047  0.336317800    5.941490
## t17*   0.3237057  0.254374254    6.237724
## t18*  -2.2713949  0.078197641    6.103603
## t19*  -3.4065067  0.070828768    5.994492
## t20*   4.1221479  0.049699966    6.210751
## t21*   4.1679530 -0.137616218    6.131911
## t22*   4.8335319 -0.075381623    5.874020
## t23*   7.1398639 -0.072165958    6.375351
## t24*   3.5608816 -0.153395031    5.816050
## t25*  -1.0011056 -0.096619254    6.109084
## t26*   6.4520380 -0.245704792    5.844314

Cross-validation

# Load necessary library
library(caret)
## Loading required package: lattice
## 
## Attaching package: 'lattice'
## The following object is masked from 'package:boot':
## 
##     melanoma
# Define cross-validation method
control <- trainControl(method = "cv", number = 10) # 10-fold cross-validation

# Train the model using cross-validation
# For example, let's say you want to train a linear regression model
model <- train(Price ~ ., data = clothes_data, method = "lm", trControl = control)

# View model results
print(model)
## Linear Regression 
## 
## 1000 samples
##    5 predictor
## 
## No pre-processing
## Resampling: Cross-Validated (10 fold) 
## Summary of sample sizes: 900, 899, 899, 901, 900, 901, ... 
## Resampling results:
## 
##   RMSE      Rsquared     MAE     
##   54.26426  0.006810947  46.36101
## 
## Tuning parameter 'intercept' was held constant at a value of TRUE

Training Different Models

# Load necessary library (if not already loaded)
library(caret)

# Define cross-validation method
control <- trainControl(method = "cv", number = 10) # 10-fold cross-validation

# Train the linear regression model using cross-validation
lm_model <- train(Price ~ ., data = clothes_data, method = "lm", trControl = control)

# View model results
print(lm_model)
## Linear Regression 
## 
## 1000 samples
##    5 predictor
## 
## No pre-processing
## Resampling: Cross-Validated (10 fold) 
## Summary of sample sizes: 901, 898, 901, 900, 900, 900, ... 
## Resampling results:
## 
##   RMSE      Rsquared     MAE    
##   54.47657  0.008440024  46.5398
## 
## Tuning parameter 'intercept' was held constant at a value of TRUE
# Load necessary library (if not already loaded)
library(randomForest)
## randomForest 4.7-1.1
## Type rfNews() to see new features/changes/bug fixes.
## 
## Attaching package: 'randomForest'
## The following object is masked from 'package:ggplot2':
## 
##     margin
## The following object is masked from 'package:dplyr':
## 
##     combine
# Train the random forest regression model
rf_model <- randomForest(Price ~ ., data = clothes_data)

# View model results
print(rf_model)
## 
## Call:
##  randomForest(formula = Price ~ ., data = clothes_data) 
##                Type of random forest: regression
##                      Number of trees: 500
## No. of variables tried at each split: 1
## 
##           Mean of squared residuals: 2980.3
##                     % Var explained: -3.47
# Load necessary library (if not already loaded)
library(gbm)
## Loaded gbm 2.1.8.1
# Train the gradient boosting regression model
gbm_model <- gbm(Price ~ ., data = clothes_data, n.trees = 100, interaction.depth = 4)
## Distribution not specified, assuming gaussian ...
# View model results
print(gbm_model)
## gbm(formula = Price ~ ., data = clothes_data, n.trees = 100, 
##     interaction.depth = 4)
## A gradient boosted model with gaussian loss function.
## 100 iterations were performed.
## There were 5 predictors of which 5 had non-zero influence.

Performance Comparison

# Load necessary libraries
library(caret)
library(randomForest)
library(gbm)

# Define cross-validation method
control <- trainControl(method = "cv", number = 10) # 10-fold cross-validation

# Define models
models <- list(
  lm = train(Price ~ ., data = clothes_data, method = "lm", trControl = control),
  rf = train(Price ~ ., data = clothes_data, method = "rf", trControl = control),
  gbm = train(Price ~ ., data = clothes_data, method = "gbm", trControl = control)
)
## Iter   TrainDeviance   ValidDeviance   StepSize   Improve
##      1     2877.4841             nan     0.1000   -8.5976
##      2     2874.7729             nan     0.1000    0.0854
##      3     2873.2883             nan     0.1000   -0.9443
##      4     2871.5005             nan     0.1000   -5.0725
##      5     2867.7853             nan     0.1000    2.9800
##      6     2866.0259             nan     0.1000   -0.6295
##      7     2864.5270             nan     0.1000   -3.2778
##      8     2863.7283             nan     0.1000   -1.5640
##      9     2863.2801             nan     0.1000   -3.7346
##     10     2864.1941             nan     0.1000  -16.5996
##     20     2847.3157             nan     0.1000   -3.7050
##     40     2828.8177             nan     0.1000   -0.1106
##     60     2819.0727             nan     0.1000   -4.1564
##     80     2815.5325             nan     0.1000   -5.2295
##    100     2814.6814             nan     0.1000   -4.2505
##    120     2811.7313             nan     0.1000   -6.2208
##    140     2808.4355             nan     0.1000   -5.1868
##    150     2809.1177             nan     0.1000   -5.4459
## 
## Iter   TrainDeviance   ValidDeviance   StepSize   Improve
##      1     2872.1698             nan     0.1000    1.9881
##      2     2866.2798             nan     0.1000   -1.8009
##      3     2864.6629             nan     0.1000   -6.3534
##      4     2861.2758             nan     0.1000   -2.2144
##      5     2855.8105             nan     0.1000   -3.7186
##      6     2849.5180             nan     0.1000   -2.0078
##      7     2847.0526             nan     0.1000   -6.9505
##      8     2843.6857             nan     0.1000   -3.3934
##      9     2837.5688             nan     0.1000    1.8834
##     10     2835.1921             nan     0.1000   -8.2452
##     20     2806.8879             nan     0.1000   -2.3610
##     40     2758.5259             nan     0.1000  -10.7160
##     60     2723.8978             nan     0.1000   -8.7810
##     80     2693.0236             nan     0.1000   -2.8107
##    100     2663.1287             nan     0.1000   -8.3239
##    120     2627.0393             nan     0.1000   -4.0706
##    140     2597.7912             nan     0.1000   -4.7156
##    150     2588.1699             nan     0.1000   -7.0624
## 
## Iter   TrainDeviance   ValidDeviance   StepSize   Improve
##      1     2872.5442             nan     0.1000   -5.1202
##      2     2865.6533             nan     0.1000    0.1603
##      3     2856.6110             nan     0.1000    1.7767
##      4     2851.4544             nan     0.1000   -4.4491
##      5     2843.9006             nan     0.1000  -10.5736
##      6     2839.6641             nan     0.1000   -3.9022
##      7     2833.8628             nan     0.1000   -4.4018
##      8     2827.9032             nan     0.1000   -6.8916
##      9     2824.0442             nan     0.1000  -14.4997
##     10     2815.5804             nan     0.1000    4.7643
##     20     2771.9622             nan     0.1000   -1.2300
##     40     2708.4856             nan     0.1000   -6.8927
##     60     2647.6975             nan     0.1000   -1.1960
##     80     2599.4259             nan     0.1000   -5.0617
##    100     2555.9757             nan     0.1000   -8.7431
##    120     2519.8542             nan     0.1000   -5.5099
##    140     2497.2436             nan     0.1000   -8.2014
##    150     2481.6140             nan     0.1000   -5.0946
## 
## Iter   TrainDeviance   ValidDeviance   StepSize   Improve
##      1     2857.6364             nan     0.1000    0.8997
##      2     2856.2630             nan     0.1000   -2.6941
##      3     2854.6629             nan     0.1000  -11.6304
##      4     2853.8171             nan     0.1000   -1.7762
##      5     2853.0706             nan     0.1000   -2.5016
##      6     2851.5433             nan     0.1000   -5.0576
##      7     2851.8332             nan     0.1000   -4.3012
##      8     2850.4860             nan     0.1000   -1.2972
##      9     2848.3400             nan     0.1000    0.3666
##     10     2848.1970             nan     0.1000   -1.9853
##     20     2832.8997             nan     0.1000   -1.5280
##     40     2825.1331             nan     0.1000   -1.3407
##     60     2814.3878             nan     0.1000   -1.3519
##     80     2811.2565             nan     0.1000  -10.5302
##    100     2806.8306             nan     0.1000   -0.7728
##    120     2805.3670             nan     0.1000   -5.3748
##    140     2805.1997             nan     0.1000   -4.5883
##    150     2804.8499             nan     0.1000   -2.0271
## 
## Iter   TrainDeviance   ValidDeviance   StepSize   Improve
##      1     2858.8018             nan     0.1000   -8.4496
##      2     2851.9020             nan     0.1000   -1.2248
##      3     2846.3710             nan     0.1000   -2.2470
##      4     2842.0659             nan     0.1000    0.5003
##      5     2838.2282             nan     0.1000   -6.9536
##      6     2838.5835             nan     0.1000  -12.2806
##      7     2833.5434             nan     0.1000   -0.3756
##      8     2829.3333             nan     0.1000   -5.6401
##      9     2827.5709             nan     0.1000   -5.1074
##     10     2823.0029             nan     0.1000   -2.3756
##     20     2793.0847             nan     0.1000   -6.4875
##     40     2754.5318             nan     0.1000   -9.9698
##     60     2723.1670             nan     0.1000   -7.3274
##     80     2687.2631             nan     0.1000   -6.2359
##    100     2659.5932             nan     0.1000   -3.1844
##    120     2641.0976             nan     0.1000   -6.6956
##    140     2615.8372             nan     0.1000  -11.0402
##    150     2606.6612             nan     0.1000   -9.0122
## 
## Iter   TrainDeviance   ValidDeviance   StepSize   Improve
##      1     2849.9513             nan     0.1000    7.5127
##      2     2840.9984             nan     0.1000   -0.1639
##      3     2838.9382             nan     0.1000   -5.8710
##      4     2834.2721             nan     0.1000   -5.8217
##      5     2829.0917             nan     0.1000   -8.1985
##      6     2824.2325             nan     0.1000   -4.3537
##      7     2820.3143             nan     0.1000    1.8185
##      8     2813.3945             nan     0.1000   -1.5427
##      9     2810.9765             nan     0.1000  -12.8696
##     10     2802.7789             nan     0.1000   -6.1681
##     20     2774.4854             nan     0.1000   -2.1110
##     40     2724.6636             nan     0.1000   -3.0613
##     60     2651.8986             nan     0.1000   -9.3277
##     80     2612.7708             nan     0.1000   -7.2584
##    100     2565.1053             nan     0.1000  -10.8426
##    120     2532.4787             nan     0.1000   -7.6541
##    140     2497.6652             nan     0.1000   -4.1595
##    150     2481.8818             nan     0.1000   -5.7319
## 
## Iter   TrainDeviance   ValidDeviance   StepSize   Improve
##      1     2900.6449             nan     0.1000    4.2485
##      2     2897.7704             nan     0.1000   -2.8115
##      3     2893.2783             nan     0.1000    0.8473
##      4     2892.0530             nan     0.1000   -0.9593
##      5     2887.3657             nan     0.1000   -1.2043
##      6     2886.3476             nan     0.1000   -2.5135
##      7     2881.7457             nan     0.1000    0.6584
##      8     2881.4705             nan     0.1000   -4.0490
##      9     2880.4360             nan     0.1000   -5.3022
##     10     2879.4695             nan     0.1000   -1.0131
##     20     2857.9452             nan     0.1000   -0.8391
##     40     2846.0143             nan     0.1000   -3.4985
##     60     2835.9915             nan     0.1000   -2.1638
##     80     2833.7620             nan     0.1000   -0.9674
##    100     2831.6139             nan     0.1000   -2.8452
##    120     2829.3788             nan     0.1000   -2.0982
##    140     2829.3185             nan     0.1000   -7.3177
##    150     2828.6112             nan     0.1000   -1.9042
## 
## Iter   TrainDeviance   ValidDeviance   StepSize   Improve
##      1     2898.2642             nan     0.1000    0.7244
##      2     2891.6408             nan     0.1000   -3.4328
##      3     2882.6415             nan     0.1000    7.3125
##      4     2876.0387             nan     0.1000    2.0541
##      5     2867.8876             nan     0.1000    3.7964
##      6     2865.3677             nan     0.1000   -6.3974
##      7     2863.5619             nan     0.1000   -8.2411
##      8     2856.6461             nan     0.1000   -5.4116
##      9     2857.0970             nan     0.1000  -10.6256
##     10     2855.8292             nan     0.1000   -4.9627
##     20     2822.5640             nan     0.1000  -21.2490
##     40     2779.2823             nan     0.1000   -2.6813
##     60     2728.1299             nan     0.1000   -2.9922
##     80     2699.0207             nan     0.1000   -1.9043
##    100     2670.8769             nan     0.1000   -7.7213
##    120     2649.4616             nan     0.1000   -4.1887
##    140     2614.2956             nan     0.1000   -9.7729
##    150     2602.0297             nan     0.1000   -6.5543
## 
## Iter   TrainDeviance   ValidDeviance   StepSize   Improve
##      1     2897.4424             nan     0.1000   -0.3260
##      2     2886.1952             nan     0.1000    2.7381
##      3     2875.2055             nan     0.1000    1.8867
##      4     2867.3517             nan     0.1000    1.2838
##      5     2858.8890             nan     0.1000   -0.9010
##      6     2850.9502             nan     0.1000    3.2075
##      7     2846.0444             nan     0.1000   -2.2550
##      8     2842.1058             nan     0.1000   -4.1483
##      9     2837.0552             nan     0.1000   -7.9321
##     10     2828.4848             nan     0.1000    0.8398
##     20     2780.0344             nan     0.1000   -4.4131
##     40     2697.5654             nan     0.1000   -2.9370
##     60     2627.3277             nan     0.1000   -9.6477
##     80     2576.1813             nan     0.1000   -7.3158
##    100     2535.2344             nan     0.1000  -11.3704
##    120     2500.2242             nan     0.1000   -8.3532
##    140     2470.4771             nan     0.1000   -4.1817
##    150     2461.1180             nan     0.1000   -7.6101
## 
## Iter   TrainDeviance   ValidDeviance   StepSize   Improve
##      1     2878.0265             nan     0.1000   -4.6980
##      2     2876.8863             nan     0.1000   -1.5309
##      3     2873.3485             nan     0.1000   -1.3977
##      4     2868.3630             nan     0.1000   -0.9484
##      5     2869.9980             nan     0.1000   -6.7128
##      6     2868.0293             nan     0.1000   -2.7720
##      7     2865.2082             nan     0.1000   -7.2666
##      8     2862.8849             nan     0.1000   -0.1072
##      9     2859.7766             nan     0.1000    2.1459
##     10     2858.5928             nan     0.1000   -5.0405
##     20     2840.9907             nan     0.1000   -3.6750
##     40     2823.9650             nan     0.1000   -2.3771
##     60     2816.1705             nan     0.1000   -3.8663
##     80     2811.2339             nan     0.1000   -1.6339
##    100     2806.3096             nan     0.1000   -1.7123
##    120     2803.8473             nan     0.1000   -2.8384
##    140     2802.4476             nan     0.1000   -6.7458
##    150     2800.7376             nan     0.1000   -2.4570
## 
## Iter   TrainDeviance   ValidDeviance   StepSize   Improve
##      1     2876.8234             nan     0.1000   -1.0678
##      2     2871.8491             nan     0.1000    0.1851
##      3     2864.1924             nan     0.1000   -2.1965
##      4     2859.6875             nan     0.1000   -2.8605
##      5     2853.1086             nan     0.1000   -3.1042
##      6     2847.5415             nan     0.1000   -2.2525
##      7     2843.0758             nan     0.1000   -9.0342
##      8     2839.6867             nan     0.1000   -0.3224
##      9     2836.4698             nan     0.1000   -5.2817
##     10     2832.6216             nan     0.1000   -4.4904
##     20     2797.8022             nan     0.1000   -3.6433
##     40     2753.4931             nan     0.1000   -4.7210
##     60     2715.2520             nan     0.1000   -1.5994
##     80     2678.5998             nan     0.1000   -3.5867
##    100     2648.9855             nan     0.1000   -5.4573
##    120     2628.4707             nan     0.1000   -3.9837
##    140     2600.5036             nan     0.1000   -5.7361
##    150     2586.0761             nan     0.1000   -2.0101
## 
## Iter   TrainDeviance   ValidDeviance   StepSize   Improve
##      1     2871.6524             nan     0.1000    1.0557
##      2     2866.7544             nan     0.1000   -6.5344
##      3     2860.0187             nan     0.1000    0.3921
##      4     2854.7858             nan     0.1000   -7.0743
##      5     2853.1739             nan     0.1000  -17.5195
##      6     2847.1537             nan     0.1000   -3.7196
##      7     2841.4728             nan     0.1000   -3.7064
##      8     2837.0521             nan     0.1000   -5.9752
##      9     2829.2182             nan     0.1000   -9.7140
##     10     2824.5707             nan     0.1000   -8.6516
##     20     2772.9077             nan     0.1000   -8.2865
##     40     2700.0401             nan     0.1000   -5.9934
##     60     2640.3732             nan     0.1000   -3.4582
##     80     2596.2760             nan     0.1000   -3.1684
##    100     2560.1181             nan     0.1000  -12.3688
##    120     2515.0188             nan     0.1000   -5.1041
##    140     2482.8238             nan     0.1000   -8.2991
##    150     2468.7403             nan     0.1000   -5.6530
## 
## Iter   TrainDeviance   ValidDeviance   StepSize   Improve
##      1     2866.7775             nan     0.1000   -3.7347
##      2     2864.1790             nan     0.1000   -2.7928
##      3     2862.9808             nan     0.1000   -2.1839
##      4     2858.7680             nan     0.1000    0.6357
##      5     2857.6221             nan     0.1000   -5.4501
##      6     2856.6664             nan     0.1000   -2.5630
##      7     2855.6098             nan     0.1000   -4.0360
##      8     2853.5159             nan     0.1000   -0.3768
##      9     2850.2057             nan     0.1000   -0.6328
##     10     2849.0989             nan     0.1000   -1.1759
##     20     2837.9803             nan     0.1000   -2.4126
##     40     2813.2467             nan     0.1000   -1.8199
##     60     2808.7438             nan     0.1000   -6.8567
##     80     2806.0065             nan     0.1000   -4.2301
##    100     2799.9554             nan     0.1000   -2.8361
##    120     2798.3492             nan     0.1000   -3.3609
##    140     2796.9091             nan     0.1000   -2.3258
##    150     2796.2400             nan     0.1000   -4.4409
## 
## Iter   TrainDeviance   ValidDeviance   StepSize   Improve
##      1     2867.6188             nan     0.1000   -1.1569
##      2     2866.8183             nan     0.1000   -9.4932
##      3     2858.9638             nan     0.1000   -0.0310
##      4     2853.8375             nan     0.1000   -2.7042
##      5     2848.0587             nan     0.1000    0.3742
##      6     2844.4592             nan     0.1000   -2.9841
##      7     2840.9836             nan     0.1000   -1.7983
##      8     2838.2937             nan     0.1000   -6.2225
##      9     2832.3695             nan     0.1000    4.3308
##     10     2831.6365             nan     0.1000   -4.9091
##     20     2792.9946             nan     0.1000    0.8992
##     40     2737.5140             nan     0.1000   -7.2632
##     60     2684.6629             nan     0.1000   -3.1192
##     80     2651.4903             nan     0.1000   -1.2717
##    100     2628.6366             nan     0.1000   -6.0533
##    120     2604.3333             nan     0.1000   -9.1949
##    140     2579.0119             nan     0.1000   -3.8610
##    150     2570.0698             nan     0.1000   -0.6853
## 
## Iter   TrainDeviance   ValidDeviance   StepSize   Improve
##      1     2858.8611             nan     0.1000    4.8559
##      2     2846.7211             nan     0.1000    2.4156
##      3     2838.2424             nan     0.1000   -2.5417
##      4     2829.7012             nan     0.1000   -1.7831
##      5     2823.1371             nan     0.1000    0.7492
##      6     2816.8795             nan     0.1000   -8.2090
##      7     2812.0041             nan     0.1000   -0.2876
##      8     2803.2960             nan     0.1000   -2.9685
##      9     2793.7027             nan     0.1000    1.5533
##     10     2787.7974             nan     0.1000   -1.8727
##     20     2738.8612             nan     0.1000   -1.6673
##     40     2669.6495             nan     0.1000   -5.2632
##     60     2607.0245             nan     0.1000   -3.7313
##     80     2562.9292             nan     0.1000   -6.5996
##    100     2523.7830             nan     0.1000   -5.5052
##    120     2488.3809             nan     0.1000   -5.4844
##    140     2458.5233             nan     0.1000   -2.1878
##    150     2443.2425             nan     0.1000  -13.2163
## 
## Iter   TrainDeviance   ValidDeviance   StepSize   Improve
##      1     2887.6634             nan     0.1000   -2.5300
##      2     2886.6685             nan     0.1000   -1.8904
##      3     2881.9764             nan     0.1000    1.4731
##      4     2880.8955             nan     0.1000   -4.7124
##      5     2875.8051             nan     0.1000   -2.3185
##      6     2873.2571             nan     0.1000    0.4166
##      7     2870.0052             nan     0.1000    1.3961
##      8     2868.1192             nan     0.1000   -5.3300
##      9     2866.4801             nan     0.1000   -0.6217
##     10     2866.9196             nan     0.1000   -7.3522
##     20     2861.6617             nan     0.1000   -2.2057
##     40     2845.9758             nan     0.1000   -4.0688
##     60     2839.9095             nan     0.1000   -3.5493
##     80     2832.2332             nan     0.1000   -1.3426
##    100     2831.5978             nan     0.1000   -4.3110
##    120     2830.8191             nan     0.1000   -5.5761
##    140     2826.6418             nan     0.1000   -2.0301
##    150     2825.5639             nan     0.1000   -1.9418
## 
## Iter   TrainDeviance   ValidDeviance   StepSize   Improve
##      1     2881.5731             nan     0.1000   -0.1132
##      2     2876.6877             nan     0.1000    1.1400
##      3     2871.7699             nan     0.1000   -1.9369
##      4     2866.5624             nan     0.1000   -0.5577
##      5     2863.1936             nan     0.1000   -2.1850
##      6     2856.3935             nan     0.1000    1.6793
##      7     2852.0362             nan     0.1000   -0.8293
##      8     2848.5708             nan     0.1000   -6.7603
##      9     2846.6391             nan     0.1000   -7.7730
##     10     2843.7362             nan     0.1000    0.6370
##     20     2822.3681             nan     0.1000   -3.8685
##     40     2765.0725             nan     0.1000   -0.5206
##     60     2726.9626             nan     0.1000   -3.0655
##     80     2691.4782             nan     0.1000   -3.8814
##    100     2659.8442             nan     0.1000   -8.1370
##    120     2635.7723             nan     0.1000   -6.7375
##    140     2612.5980             nan     0.1000   -7.3621
##    150     2599.5863             nan     0.1000   -4.2082
## 
## Iter   TrainDeviance   ValidDeviance   StepSize   Improve
##      1     2879.5609             nan     0.1000    1.5153
##      2     2873.3981             nan     0.1000   -1.8588
##      3     2866.1329             nan     0.1000   -4.2674
##      4     2860.0987             nan     0.1000   -1.2618
##      5     2857.6552             nan     0.1000  -10.4648
##      6     2853.5795             nan     0.1000   -7.6860
##      7     2846.2159             nan     0.1000   -3.2636
##      8     2842.6125             nan     0.1000   -6.1163
##      9     2837.7543             nan     0.1000   -2.5709
##     10     2834.3281             nan     0.1000   -1.8717
##     20     2786.9996             nan     0.1000   -2.0334
##     40     2716.9106             nan     0.1000   -2.6313
##     60     2650.7240             nan     0.1000   -8.4750
##     80     2601.3886             nan     0.1000   -6.3543
##    100     2555.4163             nan     0.1000   -1.9851
##    120     2525.9435             nan     0.1000   -4.9808
##    140     2489.8757             nan     0.1000   -8.7439
##    150     2471.6860             nan     0.1000  -10.3766
## 
## Iter   TrainDeviance   ValidDeviance   StepSize   Improve
##      1     2885.5439             nan     0.1000   -5.3517
##      2     2882.8115             nan     0.1000    1.6247
##      3     2881.9932             nan     0.1000   -4.9145
##      4     2880.9966             nan     0.1000   -0.9024
##      5     2877.2899             nan     0.1000    2.4611
##      6     2877.7702             nan     0.1000   -4.0465
##      7     2875.7599             nan     0.1000   -6.3433
##      8     2871.4579             nan     0.1000   -0.7410
##      9     2868.6621             nan     0.1000   -0.4464
##     10     2868.0315             nan     0.1000   -1.1131
##     20     2852.6638             nan     0.1000   -2.2870
##     40     2837.3551             nan     0.1000   -4.1441
##     60     2828.8764             nan     0.1000   -4.2301
##     80     2825.6037             nan     0.1000   -2.4784
##    100     2821.3634             nan     0.1000   -5.4609
##    120     2819.2748             nan     0.1000   -1.6319
##    140     2822.1783             nan     0.1000   -2.3167
##    150     2821.5863             nan     0.1000   -0.9980
## 
## Iter   TrainDeviance   ValidDeviance   StepSize   Improve
##      1     2880.2752             nan     0.1000    0.2914
##      2     2875.5655             nan     0.1000   -0.9232
##      3     2868.8424             nan     0.1000   -4.8645
##      4     2868.0229             nan     0.1000   -3.3529
##      5     2865.4771             nan     0.1000    0.1136
##      6     2858.1859             nan     0.1000    0.0311
##      7     2854.8150             nan     0.1000   -5.0057
##      8     2852.1780             nan     0.1000   -0.7913
##      9     2849.2063             nan     0.1000   -0.2965
##     10     2846.5279             nan     0.1000   -5.4226
##     20     2816.7135             nan     0.1000   -4.1373
##     40     2769.4617             nan     0.1000   -6.5152
##     60     2730.8567             nan     0.1000   -0.4073
##     80     2698.6489             nan     0.1000   -4.6417
##    100     2675.7511             nan     0.1000   -7.9996
##    120     2638.5015             nan     0.1000   -4.1663
##    140     2606.6257             nan     0.1000   -1.9673
##    150     2594.5260             nan     0.1000   -5.1137
## 
## Iter   TrainDeviance   ValidDeviance   StepSize   Improve
##      1     2878.9420             nan     0.1000    4.3514
##      2     2866.6113             nan     0.1000   -6.2095
##      3     2858.9431             nan     0.1000   -8.7258
##      4     2848.4234             nan     0.1000   -3.3755
##      5     2841.5710             nan     0.1000   -1.3437
##      6     2839.3121             nan     0.1000  -10.5202
##      7     2836.0731             nan     0.1000   -7.9292
##      8     2830.6291             nan     0.1000   -2.4390
##      9     2822.5890             nan     0.1000    3.0773
##     10     2821.6140             nan     0.1000   -9.8762
##     20     2777.0804             nan     0.1000   -7.0423
##     40     2693.6129             nan     0.1000   -5.9322
##     60     2640.2831             nan     0.1000   -4.2807
##     80     2604.2492             nan     0.1000   -5.4504
##    100     2563.3600             nan     0.1000   -3.8989
##    120     2525.5341             nan     0.1000   -5.5163
##    140     2489.2169             nan     0.1000   -4.2608
##    150     2476.3781             nan     0.1000   -4.5966
## 
## Iter   TrainDeviance   ValidDeviance   StepSize   Improve
##      1     2859.9191             nan     0.1000    1.8826
##      2     2858.1917             nan     0.1000    1.2405
##      3     2857.9873             nan     0.1000   -8.0022
##      4     2855.5709             nan     0.1000    1.4045
##      5     2853.7076             nan     0.1000    0.0765
##      6     2853.4375             nan     0.1000   -4.1078
##      7     2850.7397             nan     0.1000    1.3199
##      8     2848.7585             nan     0.1000    0.6590
##      9     2848.7362             nan     0.1000   -4.6156
##     10     2846.3052             nan     0.1000   -0.7759
##     20     2839.0959             nan     0.1000   -3.3897
##     40     2828.5282             nan     0.1000   -4.0355
##     60     2821.4907             nan     0.1000   -4.5115
##     80     2819.5141             nan     0.1000   -8.6125
##    100     2818.1511             nan     0.1000   -4.7882
##    120     2817.2315             nan     0.1000   -3.0946
##    140     2815.3009             nan     0.1000   -4.9027
##    150     2815.2328             nan     0.1000   -1.6269
## 
## Iter   TrainDeviance   ValidDeviance   StepSize   Improve
##      1     2860.8344             nan     0.1000   -4.6749
##      2     2858.8695             nan     0.1000   -7.5417
##      3     2854.7456             nan     0.1000   -4.2186
##      4     2849.9368             nan     0.1000   -1.0558
##      5     2847.7607             nan     0.1000   -5.7387
##      6     2841.8539             nan     0.1000    1.9808
##      7     2838.5531             nan     0.1000   -4.8186
##      8     2835.5886             nan     0.1000   -0.5434
##      9     2830.3198             nan     0.1000   -0.1733
##     10     2826.2868             nan     0.1000   -5.3952
##     20     2793.1111             nan     0.1000   -1.9113
##     40     2745.4974             nan     0.1000   -5.3485
##     60     2716.7476             nan     0.1000   -8.3996
##     80     2681.0544             nan     0.1000   -4.6257
##    100     2645.6979             nan     0.1000   -1.2539
##    120     2611.6550             nan     0.1000   -2.2802
##    140     2590.3705             nan     0.1000   -7.9081
##    150     2577.8393             nan     0.1000   -5.7950
## 
## Iter   TrainDeviance   ValidDeviance   StepSize   Improve
##      1     2856.7740             nan     0.1000   -0.8334
##      2     2850.4668             nan     0.1000   -0.1806
##      3     2840.0179             nan     0.1000    0.3189
##      4     2833.2498             nan     0.1000   -3.6930
##      5     2827.9139             nan     0.1000   -5.7216
##      6     2818.7207             nan     0.1000   -2.0684
##      7     2814.7782             nan     0.1000   -4.5162
##      8     2809.7157             nan     0.1000   -3.5505
##      9     2806.7192             nan     0.1000   -9.2428
##     10     2801.1367             nan     0.1000   -5.4555
##     20     2754.1550             nan     0.1000   -5.8780
##     40     2683.7256             nan     0.1000   -4.6963
##     60     2642.2437             nan     0.1000  -11.8283
##     80     2608.4016             nan     0.1000   -6.9441
##    100     2563.6094             nan     0.1000   -6.8538
##    120     2528.8026             nan     0.1000    0.5016
##    140     2489.6901             nan     0.1000   -6.6403
##    150     2480.9355             nan     0.1000   -7.2612
## 
## Iter   TrainDeviance   ValidDeviance   StepSize   Improve
##      1     2880.8140             nan     0.1000   -4.4420
##      2     2876.8908             nan     0.1000    1.0860
##      3     2874.4498             nan     0.1000   -1.7856
##      4     2873.1408             nan     0.1000  -10.2952
##      5     2872.2192             nan     0.1000   -2.1046
##      6     2871.7386             nan     0.1000   -2.8697
##      7     2870.0943             nan     0.1000    0.6451
##      8     2867.9646             nan     0.1000   -0.4219
##      9     2864.6630             nan     0.1000   -0.1575
##     10     2860.9931             nan     0.1000    1.8211
##     20     2847.8709             nan     0.1000   -1.4479
##     40     2826.6171             nan     0.1000   -5.4228
##     60     2820.0944             nan     0.1000   -4.7208
##     80     2816.1935             nan     0.1000   -2.8116
##    100     2813.2686             nan     0.1000   -4.1148
##    120     2811.0730             nan     0.1000   -1.7159
##    140     2809.8587             nan     0.1000   -5.3937
##    150     2809.6192             nan     0.1000   -3.3073
## 
## Iter   TrainDeviance   ValidDeviance   StepSize   Improve
##      1     2876.6424             nan     0.1000   -0.8512
##      2     2871.4926             nan     0.1000   -0.7124
##      3     2866.7729             nan     0.1000   -1.4626
##      4     2862.6872             nan     0.1000   -2.0045
##      5     2856.0041             nan     0.1000   -1.9808
##      6     2852.3292             nan     0.1000   -1.2619
##      7     2849.4040             nan     0.1000  -13.1900
##      8     2847.7735             nan     0.1000   -2.4023
##      9     2844.0540             nan     0.1000   -9.8178
##     10     2841.4320             nan     0.1000   -0.8497
##     20     2812.1661             nan     0.1000   -8.3949
##     40     2779.5068             nan     0.1000   -3.0752
##     60     2737.8551             nan     0.1000   -8.3603
##     80     2700.6662             nan     0.1000   -8.8677
##    100     2670.7491             nan     0.1000   -0.8458
##    120     2633.8516             nan     0.1000   -3.9636
##    140     2609.5115             nan     0.1000   -1.6489
##    150     2600.8672             nan     0.1000   -6.3688
## 
## Iter   TrainDeviance   ValidDeviance   StepSize   Improve
##      1     2872.6290             nan     0.1000    5.4092
##      2     2863.5126             nan     0.1000   -0.7044
##      3     2852.6203             nan     0.1000    1.5520
##      4     2847.1173             nan     0.1000    1.2483
##      5     2842.9374             nan     0.1000   -6.1527
##      6     2838.8589             nan     0.1000   -4.7158
##      7     2834.1671             nan     0.1000   -1.2343
##      8     2830.9159             nan     0.1000   -2.5149
##      9     2824.2824             nan     0.1000   -3.5126
##     10     2821.6286             nan     0.1000   -8.2981
##     20     2780.9681             nan     0.1000   -4.8858
##     40     2717.5571             nan     0.1000   -3.4258
##     60     2659.4789             nan     0.1000  -10.0698
##     80     2609.4153             nan     0.1000   -6.0808
##    100     2567.0680             nan     0.1000   -9.3671
##    120     2519.8395             nan     0.1000   -6.5225
##    140     2488.2086             nan     0.1000   -8.8028
##    150     2475.4327             nan     0.1000   -8.5764
## 
## Iter   TrainDeviance   ValidDeviance   StepSize   Improve
##      1     2882.6546             nan     0.1000   -2.9853
##      2     2878.6034             nan     0.1000   -2.2090
##      3     2871.1687             nan     0.1000   -4.3108
##      4     2868.9141             nan     0.1000   -4.7797
##      5     2865.0622             nan     0.1000    1.9764
##      6     2861.6847             nan     0.1000    0.0168
##      7     2859.6240             nan     0.1000    0.9328
##      8     2860.1107             nan     0.1000   -2.4314
##      9     2857.6165             nan     0.1000    0.5978
##     10     2856.0053             nan     0.1000    0.5043
##     20     2843.6671             nan     0.1000   -1.2104
##     40     2830.6144             nan     0.1000   -1.2076
##     60     2826.6900             nan     0.1000   -1.5363
##     80     2821.5373             nan     0.1000   -4.5951
##    100     2818.3913             nan     0.1000   -2.8183
##    120     2818.2948             nan     0.1000   -4.9678
##    140     2816.0282             nan     0.1000   -4.7987
##    150     2816.6147             nan     0.1000   -3.8457
## 
## Iter   TrainDeviance   ValidDeviance   StepSize   Improve
##      1     2877.0779             nan     0.1000   -1.6748
##      2     2871.2394             nan     0.1000    0.0910
##      3     2868.7627             nan     0.1000   -7.4134
##      4     2866.5950             nan     0.1000   -9.0456
##      5     2862.0327             nan     0.1000    1.4953
##      6     2857.2298             nan     0.1000   -1.9316
##      7     2851.2064             nan     0.1000   -1.6301
##      8     2849.2325             nan     0.1000   -3.2945
##      9     2845.4490             nan     0.1000   -5.9850
##     10     2838.4848             nan     0.1000    2.9697
##     20     2806.7796             nan     0.1000   -4.5084
##     40     2773.1175             nan     0.1000   -2.7807
##     60     2729.6206             nan     0.1000    0.1635
##     80     2698.7605             nan     0.1000   -3.6817
##    100     2670.2152             nan     0.1000   -5.1685
##    120     2645.4286             nan     0.1000   -7.7420
##    140     2625.0782             nan     0.1000   -4.2675
##    150     2614.9107             nan     0.1000   -5.4635
## 
## Iter   TrainDeviance   ValidDeviance   StepSize   Improve
##      1     2873.3425             nan     0.1000   -0.2603
##      2     2867.6718             nan     0.1000   -5.5668
##      3     2862.8327             nan     0.1000   -4.9171
##      4     2859.1745             nan     0.1000   -9.5109
##      5     2853.7025             nan     0.1000   -4.3341
##      6     2846.7484             nan     0.1000   -2.0629
##      7     2840.8547             nan     0.1000   -5.6076
##      8     2833.7663             nan     0.1000    3.2837
##      9     2828.6709             nan     0.1000   -5.6627
##     10     2822.3630             nan     0.1000   -3.8818
##     20     2782.5980             nan     0.1000  -11.0269
##     40     2716.1324             nan     0.1000   -3.0718
##     60     2665.5579             nan     0.1000   -5.2026
##     80     2614.6073             nan     0.1000   -5.9662
##    100     2576.2881             nan     0.1000   -5.4988
##    120     2536.8119             nan     0.1000   -9.1765
##    140     2502.1017             nan     0.1000   -3.8239
##    150     2485.1949             nan     0.1000   -5.4755
## 
## Iter   TrainDeviance   ValidDeviance   StepSize   Improve
##      1     2879.9059             nan     0.1000   -2.2977
##      2     2878.9960             nan     0.1000   -4.5937
##      3     2877.3833             nan     0.1000   -0.2230
##      4     2874.0609             nan     0.1000    2.6541
##      5     2872.5247             nan     0.1000   -1.9505
##      6     2871.9310             nan     0.1000   -1.7693
##      7     2869.3586             nan     0.1000    1.4945
##      8     2869.3287             nan     0.1000   -6.0918
##      9     2866.2251             nan     0.1000   -1.1106
##     10     2863.1266             nan     0.1000   -1.1156
##     20     2848.5501             nan     0.1000   -4.5982
##     40     2836.8247             nan     0.1000   -4.4006
##     50     2832.0783             nan     0.1000   -1.9073
# Compare model performance using resamples
model_resamples <- resamples(models)

# Summarize model performance
summary(model_resamples)
## 
## Call:
## summary.resamples(object = model_resamples)
## 
## Models: lm, rf, gbm 
## Number of resamples: 10 
## 
## MAE 
##         Min.  1st Qu.   Median     Mean  3rd Qu.     Max. NA's
## lm  44.24859 45.69267 46.55061 46.43554 46.99314 49.01952    0
## rf  42.53148 45.53006 46.59841 46.40882 47.81636 48.31262    0
## gbm 45.01225 45.40984 46.49281 46.10238 46.73956 46.77336    0
## 
## RMSE 
##         Min.  1st Qu.   Median     Mean  3rd Qu.     Max. NA's
## lm  51.29051 53.62841 54.51740 54.34704 55.13459 56.98366    0
## rf  50.64567 54.04600 54.72624 54.30937 55.19142 55.60999    0
## gbm 52.87597 53.13649 53.92786 53.88261 54.59504 54.90752    0
## 
## Rsquared 
##             Min.      1st Qu.      Median        Mean     3rd Qu.       Max.
## lm  1.169080e-03 0.0017467013 0.003532283 0.007818354 0.006357887 0.02786118
## rf  1.109261e-05 0.0015249366 0.003590765 0.013240308 0.009365855 0.09161212
## gbm 8.103791e-06 0.0008240705 0.005003803 0.008418868 0.015568902 0.02534799
##     NA's
## lm     0
## rf     0
## gbm    0
# Plot model performance
dotplot(model_resamples)

Saving Model

# Saving the Linear Regression model
saveRDS(lm_model, "./models/saved_lm_model.rds")

# Load the saved model
loaded_lm_model <- readRDS("./models/saved_lm_model.rds")

# Prepare new data for prediction
new_data <- data.frame(
  Brand = "New Balance",
  Category = "Dress",
  Color = "White",
  Size = "XS",
  Material = "Nylon"
)

# Use the loaded model to make predictions
predictions_loaded_model <- predict(loaded_lm_model, newdata = new_data)

# Print predictions
print(predictions_loaded_model)
##        1 
## 138.2554